/**
 * Title: AuthRoleService.java
 * Description: Copyright: Copyright (c) 2019 Company: BHFAE
 *
 * @author Sharp
 * @date 2019-9-15 14:07
 * @description Project Name: Grote
 * @Package: com.srct.service.account.service
 */
package com.sharp.authorization.service.permit;

import com.sharp.authorization.dao.common.entity.AcRole;
import com.sharp.authorization.vo.role.*;

import java.util.List;

public interface AuthRoleService {
    /**
     * 绑定用户角色.
     *
     * @param userId 用户登录名
     * @param roleId 角色Id
     * @return
     */
    void bindUserRole(String userId, String roleId);

    /**
     * 解除绑定用户角色.
     *
     * @param userId 用户登录名
     * @param roleId 角色Id
     * @return
     */
    void unbindUserRole(String userId, String roleId);

    /**
     * 获取用户角色列表(多角色).
     *
     * @param userId 用户id
     * @return 登录role角色列表
     */
    List<RoleRes> getRoleListByUserId(String userId);

    /**
     * 获取下属role 列表
     *
     * @param parentRoleId
     * @return 下属role列表
     */
    List<AcRole> getSubRoleList(String parentRoleId);

    /**
     * 获取角色树
     *
     * @return 角色树
     */
    List<RoleTreeRes> queryRoleTree();

    /**
     * 获取权限列表
     *
     * @return 角色树
     */
    List<RoleRes> queryRole(QueryRoleReq req);

    /**
     * 添加角色
     *
     * @param req
     */
    void addRole(AddRoleReq req);

    /**
     * 更新角色
     *
     * @param req
     */
    void updateRole(UpdateRoleReq req);

    /**
     * 删除角色
     *
     * @param req
     */
    void deleteRole(DeleteRoleReq req);


}
